package cn.tedu.thread;

/**
 * @author ：Dsi
 * @date ：2021/11/19 15:06
 * Describe ：该类用于多线程编程实现方案一：继承Thread的方式
 */
public class TestThread01 {
    public static void main(String[] args) {
        /*4.new对应的是线程的新建状态
        * 5.如果想模拟多线程，就得创建2个以上的线程*/
        MyThread t=new MyThread();
        MyThread t1=new MyThread();
        MyThread t2=new MyThread();
        MyThread t3=new MyThread();
        /*6.这个方法如果直接run调用，无效果，当做普通方法调用*/
//        t.run();
//        t1.run();
//        t2.run();
//        t3.run();
        /*7.想要模拟多线程，就得调用stat方法
        * start（）才是线程的就绪状态，至于什么时候执行，需要操作系统选择分配时间片才会执行
        * 8.执行start（）时，底层会自动调用重写的run（）方法，所以先start（）进入就绪状态，再run（）运行线程
        * 9.线程执行具有随机性，看os系统的对时间片的调度*/
        t.start();
        t1.start();
        t2.start();
        t3.start();



    }
}
//1.定义一个多线程类
class MyThread extends Thread{
    /*1.多线程编程实现的方案一：通过继承Thread类，并重写run（）类完成的*/
    //2.重写run（）,
    @Override
    public void run() {
        /*2.super.run()，表示调用父类的业务，但现在我们想要自己的业务，所以注释掉*/
        //super.run();
        for (int i = 0; i < 10; i++) {
            /*3.getName()表示可以获取当前正在执行的线程名称
            * 由于本类继承了父类Thread类，所以此处是调用了thread类提供的功能*/
            System.out.println(i+"="+getName());
        }
    }
}